package com.flute.haflute.jobbox.base.mapreduce;


/**
 * MapReduce机制中的Map任务接口
 * @author Liu Liu
 * @date 2010-5-7
 */
public interface MapTaskBase {
	
	/**
	 * 根据运行时情况需要对执行的任务进行动态环境的配置
	 * @param jobConf MRJobConf
	 * @throws Exception
	 */
	void configure(MRJobConf jobConf) throws Exception;

	/**
	 * 具体map计算
	 * @param collector OutputCollector
	 * @param key KeyBase
	 * @param val ValueBase
	 * @throws Exception
	 */
	void map(OutputCollector collector, String key, String val)
			throws Exception;

	/**
	 * 是否有消息通信器，用于以特定应用的方式通信
	 */
	boolean hasMessager() throws Exception;
	
	/**
	 * 是否需要将输出结果反馈给原始资源管理器，
	 * 当MapReduce以通道方式传输数据时，需要设置该类
	 */
	boolean needFeedBack() throws Exception;

	/**
	 * 关闭之前，需清除所有已分配资源
	 */
	public void close() throws Exception;

}
